﻿using EventBus;
using LiteStep.Conversions;
using LiteStep.Conversions.ConversionUpdaters;
using LiteStep.Currencies;
using LiteStep.DataSources.BtcE;
using LiteStep.DataSources.MtGox;
using LiteStep.DataSources.Vircurex;
using LiteStep.Exchanges;
using LiteStep.Fees;
using LiteStep.Utils.Recorders;
using LiteStep.Utils.Recorders.BtcE;
using LiteStep.Utils.Recorders.MtGox;
using LiteStep.Utils.Recorders.Vircurex;
using Ninject.Modules;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LiteStep.Utils
{
	public class DefaultNinjectModule : NinjectModule
	{
		public override void Load()
		{
			Bind<IEventBus>().To<SimpleEventBus>().InSingletonScope();
			Bind<IConversionManager>().To<SimpleConversionManager>().InSingletonScope();
            Bind<IFeeStructureManager>().To<SimpleFeeStructureManager>().InSingletonScope();
			Bind<LiteStepContext>().ToSelf().WithConstructorArgument("connectionString", @"metadata=res://*/LiteStepModel.csdl|res://*/LiteStepModel.ssdl|res://*/LiteStepModel.msl;provider=System.Data.SqlClient;provider connection string='data source=THOMAS-PC\SQLEXPRESS;initial catalog=LiteStep;persist security info=True;user id=sa;password=sapassword;MultipleActiveResultSets=True;App=EntityFramework'");
			Bind<MtGoxRestApi2.RestClient>().ToSelf().WithConstructorArgument("baseUrl", @"https://data.mtgox.com/api/2/");
			Bind<MtGoxRestApi2>().ToSelf().InSingletonScope();
			Bind<BtcERestApi2.RestClient>().ToSelf().WithConstructorArgument("baseUrl", @"https://btc-e.com/api/2/");
			Bind<BtcERestApi2>().ToSelf().InSingletonScope();
			Bind<VircurexRestApi.RestClient>().ToSelf().WithConstructorArgument("baseUrl", @"https://vircurex.com/api/");
			Bind<VircurexRestApi>().ToSelf().InSingletonScope();

            BindVircurexDepthConversionUpdaters();

            BindMtGoxRecorders();
            BindBtcERecorders();
			BindVircurexRecorders();
		}

        private void BindMtGoxRecorders()
        {
            #region MtGox Ticker Recorders
            Bind<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Usd>>>().To<MtGoxTickerRecorder<Btc, Usd>>().InSingletonScope();
            Bind<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Eur>>>().To<MtGoxTickerRecorder<Btc, Eur>>().InSingletonScope();
            Bind<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Jpy>>>().To<MtGoxTickerRecorder<Btc, Jpy>>().InSingletonScope();
            Bind<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Cad>>>().To<MtGoxTickerRecorder<Btc, Cad>>().InSingletonScope();
            Bind<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Gbp>>>().To<MtGoxTickerRecorder<Btc, Gbp>>().InSingletonScope();
            Bind<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Chf>>>().To<MtGoxTickerRecorder<Btc, Chf>>().InSingletonScope();
            Bind<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Rub>>>().To<MtGoxTickerRecorder<Btc, Rub>>().InSingletonScope();
            Bind<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Aud>>>().To<MtGoxTickerRecorder<Btc, Aud>>().InSingletonScope();
            Bind<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Sek>>>().To<MtGoxTickerRecorder<Btc, Sek>>().InSingletonScope();
            Bind<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Dkk>>>().To<MtGoxTickerRecorder<Btc, Dkk>>().InSingletonScope();
            Bind<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Hkd>>>().To<MtGoxTickerRecorder<Btc, Hkd>>().InSingletonScope();
            Bind<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Pln>>>().To<MtGoxTickerRecorder<Btc, Pln>>().InSingletonScope();
            Bind<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Cny>>>().To<MtGoxTickerRecorder<Btc, Cny>>().InSingletonScope();
            Bind<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Sgd>>>().To<MtGoxTickerRecorder<Btc, Sgd>>().InSingletonScope();
            Bind<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Thb>>>().To<MtGoxTickerRecorder<Btc, Thb>>().InSingletonScope();
            Bind<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Nzd>>>().To<MtGoxTickerRecorder<Btc, Nzd>>().InSingletonScope();
            Bind<ITickerRecorder<Exchanges.MtGox.Ticker<Btc, Nok>>>().To<MtGoxTickerRecorder<Btc, Nok>>().InSingletonScope();
            #endregion
        }

        private void BindBtcERecorders()
        {
            #region Btc-E Ticker Recorders
            Bind<ITickerRecorder<Exchanges.BtcE.Ticker<Btc, Usd>>>().To<BtcETickerRecorder<Btc, Usd>>().InSingletonScope();
            Bind<ITickerRecorder<Exchanges.BtcE.Ticker<Btc, Rur>>>().To<BtcETickerRecorder<Btc, Rur>>().InSingletonScope();
            Bind<ITickerRecorder<Exchanges.BtcE.Ticker<Btc, Eur>>>().To<BtcETickerRecorder<Btc, Eur>>().InSingletonScope();
            Bind<ITickerRecorder<Exchanges.BtcE.Ticker<Ltc, Btc>>>().To<BtcETickerRecorder<Ltc, Btc>>().InSingletonScope();
            Bind<ITickerRecorder<Exchanges.BtcE.Ticker<Ltc, Usd>>>().To<BtcETickerRecorder<Ltc, Usd>>().InSingletonScope();
            Bind<ITickerRecorder<Exchanges.BtcE.Ticker<Ltc, Rur>>>().To<BtcETickerRecorder<Ltc, Rur>>().InSingletonScope();
            Bind<ITickerRecorder<Exchanges.BtcE.Ticker<Nmc, Btc>>>().To<BtcETickerRecorder<Nmc, Btc>>().InSingletonScope();
            Bind<ITickerRecorder<Exchanges.BtcE.Ticker<Usd, Rur>>>().To<BtcETickerRecorder<Usd, Rur>>().InSingletonScope();
            Bind<ITickerRecorder<Exchanges.BtcE.Ticker<Eur, Usd>>>().To<BtcETickerRecorder<Eur, Usd>>().InSingletonScope();
            Bind<ITickerRecorder<Exchanges.BtcE.Ticker<Nvc, Btc>>>().To<BtcETickerRecorder<Nvc, Btc>>().InSingletonScope();
            Bind<ITickerRecorder<Exchanges.BtcE.Ticker<Trc, Btc>>>().To<BtcETickerRecorder<Trc, Btc>>().InSingletonScope();
            Bind<ITickerRecorder<Exchanges.BtcE.Ticker<Ppc, Btc>>>().To<BtcETickerRecorder<Ppc, Btc>>().InSingletonScope();
            Bind<ITickerRecorder<Exchanges.BtcE.Ticker<Ftc, Btc>>>().To<BtcETickerRecorder<Ftc, Btc>>().InSingletonScope();
            Bind<ITickerRecorder<Exchanges.BtcE.Ticker<Cnc, Btc>>>().To<BtcETickerRecorder<Cnc, Btc>>().InSingletonScope();
            #endregion
        }

		private void BindVircurexRecorders()
        {
            #region Vircurex Ticker Recorders
            Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Btc, Bqc>>>().To<VircurexTickerRecorder<Btc, Bqc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Btc, Cnc>>>().To<VircurexTickerRecorder<Btc, Cnc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Btc, Dvc>>>().To<VircurexTickerRecorder<Btc, Dvc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Btc, Eur>>>().To<VircurexTickerRecorder<Btc, Eur>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Btc, Frc>>>().To<VircurexTickerRecorder<Btc, Frc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Btc, Ftc>>>().To<VircurexTickerRecorder<Btc, Ftc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Btc, Ixc>>>().To<VircurexTickerRecorder<Btc, Ixc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Btc, Ltc>>>().To<VircurexTickerRecorder<Btc, Ltc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Btc, Nmc>>>().To<VircurexTickerRecorder<Btc, Nmc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Btc, Nvc>>>().To<VircurexTickerRecorder<Btc, Nvc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Btc, Ppc>>>().To<VircurexTickerRecorder<Btc, Ppc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Btc, Trc>>>().To<VircurexTickerRecorder<Btc, Trc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Btc, Usd>>>().To<VircurexTickerRecorder<Btc, Usd>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Btc, Yac>>>().To<VircurexTickerRecorder<Btc, Yac>>().InSingletonScope();

			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Bqc, Btc>>>().To<VircurexTickerRecorder<Bqc, Btc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Bqc, Cnc>>>().To<VircurexTickerRecorder<Bqc, Cnc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Bqc, Dvc>>>().To<VircurexTickerRecorder<Bqc, Dvc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Bqc, Eur>>>().To<VircurexTickerRecorder<Bqc, Eur>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Bqc, Frc>>>().To<VircurexTickerRecorder<Bqc, Frc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Bqc, Ftc>>>().To<VircurexTickerRecorder<Bqc, Ftc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Bqc, Ixc>>>().To<VircurexTickerRecorder<Bqc, Ixc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Bqc, Ltc>>>().To<VircurexTickerRecorder<Bqc, Ltc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Bqc, Nmc>>>().To<VircurexTickerRecorder<Bqc, Nmc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Bqc, Nvc>>>().To<VircurexTickerRecorder<Bqc, Nvc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Bqc, Ppc>>>().To<VircurexTickerRecorder<Bqc, Ppc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Bqc, Trc>>>().To<VircurexTickerRecorder<Bqc, Trc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Bqc, Usd>>>().To<VircurexTickerRecorder<Bqc, Usd>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Bqc, Yac>>>().To<VircurexTickerRecorder<Bqc, Yac>>().InSingletonScope();

			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Cnc, Btc>>>().To<VircurexTickerRecorder<Cnc, Btc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Cnc, Bqc>>>().To<VircurexTickerRecorder<Cnc, Bqc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Cnc, Dvc>>>().To<VircurexTickerRecorder<Cnc, Dvc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Cnc, Eur>>>().To<VircurexTickerRecorder<Cnc, Eur>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Cnc, Frc>>>().To<VircurexTickerRecorder<Cnc, Frc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Cnc, Ftc>>>().To<VircurexTickerRecorder<Cnc, Ftc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Cnc, Ixc>>>().To<VircurexTickerRecorder<Cnc, Ixc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Cnc, Ltc>>>().To<VircurexTickerRecorder<Cnc, Ltc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Cnc, Nmc>>>().To<VircurexTickerRecorder<Cnc, Nmc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Cnc, Nvc>>>().To<VircurexTickerRecorder<Cnc, Nvc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Cnc, Ppc>>>().To<VircurexTickerRecorder<Cnc, Ppc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Cnc, Trc>>>().To<VircurexTickerRecorder<Cnc, Trc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Cnc, Usd>>>().To<VircurexTickerRecorder<Cnc, Usd>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Cnc, Yac>>>().To<VircurexTickerRecorder<Cnc, Yac>>().InSingletonScope();

			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Dvc, Btc>>>().To<VircurexTickerRecorder<Dvc, Btc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Dvc, Bqc>>>().To<VircurexTickerRecorder<Dvc, Bqc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Dvc, Cnc>>>().To<VircurexTickerRecorder<Dvc, Cnc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Dvc, Eur>>>().To<VircurexTickerRecorder<Dvc, Eur>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Dvc, Frc>>>().To<VircurexTickerRecorder<Dvc, Frc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Dvc, Ftc>>>().To<VircurexTickerRecorder<Dvc, Ftc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Dvc, Ixc>>>().To<VircurexTickerRecorder<Dvc, Ixc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Dvc, Ltc>>>().To<VircurexTickerRecorder<Dvc, Ltc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Dvc, Nmc>>>().To<VircurexTickerRecorder<Dvc, Nmc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Dvc, Nvc>>>().To<VircurexTickerRecorder<Dvc, Nvc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Dvc, Ppc>>>().To<VircurexTickerRecorder<Dvc, Ppc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Dvc, Trc>>>().To<VircurexTickerRecorder<Dvc, Trc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Dvc, Usd>>>().To<VircurexTickerRecorder<Dvc, Usd>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Dvc, Yac>>>().To<VircurexTickerRecorder<Dvc, Yac>>().InSingletonScope();

			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Eur, Btc>>>().To<VircurexTickerRecorder<Eur, Btc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Eur, Bqc>>>().To<VircurexTickerRecorder<Eur, Bqc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Eur, Cnc>>>().To<VircurexTickerRecorder<Eur, Cnc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Eur, Dvc>>>().To<VircurexTickerRecorder<Eur, Dvc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Eur, Frc>>>().To<VircurexTickerRecorder<Eur, Frc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Eur, Ftc>>>().To<VircurexTickerRecorder<Eur, Ftc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Eur, Ixc>>>().To<VircurexTickerRecorder<Eur, Ixc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Eur, Ltc>>>().To<VircurexTickerRecorder<Eur, Ltc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Eur, Nmc>>>().To<VircurexTickerRecorder<Eur, Nmc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Eur, Nvc>>>().To<VircurexTickerRecorder<Eur, Nvc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Eur, Ppc>>>().To<VircurexTickerRecorder<Eur, Ppc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Eur, Trc>>>().To<VircurexTickerRecorder<Eur, Trc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Eur, Usd>>>().To<VircurexTickerRecorder<Eur, Usd>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Eur, Yac>>>().To<VircurexTickerRecorder<Eur, Yac>>().InSingletonScope();

			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Frc, Btc>>>().To<VircurexTickerRecorder<Frc, Btc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Frc, Bqc>>>().To<VircurexTickerRecorder<Frc, Bqc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Frc, Cnc>>>().To<VircurexTickerRecorder<Frc, Cnc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Frc, Dvc>>>().To<VircurexTickerRecorder<Frc, Dvc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Frc, Eur>>>().To<VircurexTickerRecorder<Frc, Eur>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Frc, Ftc>>>().To<VircurexTickerRecorder<Frc, Ftc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Frc, Ixc>>>().To<VircurexTickerRecorder<Frc, Ixc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Frc, Ltc>>>().To<VircurexTickerRecorder<Frc, Ltc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Frc, Nmc>>>().To<VircurexTickerRecorder<Frc, Nmc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Frc, Nvc>>>().To<VircurexTickerRecorder<Frc, Nvc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Frc, Ppc>>>().To<VircurexTickerRecorder<Frc, Ppc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Frc, Trc>>>().To<VircurexTickerRecorder<Frc, Trc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Frc, Usd>>>().To<VircurexTickerRecorder<Frc, Usd>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Frc, Yac>>>().To<VircurexTickerRecorder<Frc, Yac>>().InSingletonScope();

			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ftc, Btc>>>().To<VircurexTickerRecorder<Ftc, Btc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ftc, Bqc>>>().To<VircurexTickerRecorder<Ftc, Bqc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ftc, Cnc>>>().To<VircurexTickerRecorder<Ftc, Cnc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ftc, Dvc>>>().To<VircurexTickerRecorder<Ftc, Dvc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ftc, Eur>>>().To<VircurexTickerRecorder<Ftc, Eur>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ftc, Frc>>>().To<VircurexTickerRecorder<Ftc, Frc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ftc, Ixc>>>().To<VircurexTickerRecorder<Ftc, Ixc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ftc, Ltc>>>().To<VircurexTickerRecorder<Ftc, Ltc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ftc, Nmc>>>().To<VircurexTickerRecorder<Ftc, Nmc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ftc, Nvc>>>().To<VircurexTickerRecorder<Ftc, Nvc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ftc, Ppc>>>().To<VircurexTickerRecorder<Ftc, Ppc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ftc, Trc>>>().To<VircurexTickerRecorder<Ftc, Trc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ftc, Usd>>>().To<VircurexTickerRecorder<Ftc, Usd>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ftc, Yac>>>().To<VircurexTickerRecorder<Ftc, Yac>>().InSingletonScope();

			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ixc, Btc>>>().To<VircurexTickerRecorder<Ixc, Btc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ixc, Bqc>>>().To<VircurexTickerRecorder<Ixc, Bqc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ixc, Cnc>>>().To<VircurexTickerRecorder<Ixc, Cnc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ixc, Dvc>>>().To<VircurexTickerRecorder<Ixc, Dvc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ixc, Eur>>>().To<VircurexTickerRecorder<Ixc, Eur>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ixc, Frc>>>().To<VircurexTickerRecorder<Ixc, Frc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ixc, Ftc>>>().To<VircurexTickerRecorder<Ixc, Ftc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ixc, Ltc>>>().To<VircurexTickerRecorder<Ixc, Ltc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ixc, Nmc>>>().To<VircurexTickerRecorder<Ixc, Nmc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ixc, Nvc>>>().To<VircurexTickerRecorder<Ixc, Nvc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ixc, Ppc>>>().To<VircurexTickerRecorder<Ixc, Ppc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ixc, Trc>>>().To<VircurexTickerRecorder<Ixc, Trc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ixc, Usd>>>().To<VircurexTickerRecorder<Ixc, Usd>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ixc, Yac>>>().To<VircurexTickerRecorder<Ixc, Yac>>().InSingletonScope();

			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ltc, Btc>>>().To<VircurexTickerRecorder<Ltc, Btc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ltc, Bqc>>>().To<VircurexTickerRecorder<Ltc, Bqc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ltc, Cnc>>>().To<VircurexTickerRecorder<Ltc, Cnc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ltc, Dvc>>>().To<VircurexTickerRecorder<Ltc, Dvc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ltc, Eur>>>().To<VircurexTickerRecorder<Ltc, Eur>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ltc, Frc>>>().To<VircurexTickerRecorder<Ltc, Frc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ltc, Ftc>>>().To<VircurexTickerRecorder<Ltc, Ftc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ltc, Ixc>>>().To<VircurexTickerRecorder<Ltc, Ixc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ltc, Nmc>>>().To<VircurexTickerRecorder<Ltc, Nmc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ltc, Nvc>>>().To<VircurexTickerRecorder<Ltc, Nvc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ltc, Ppc>>>().To<VircurexTickerRecorder<Ltc, Ppc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ltc, Trc>>>().To<VircurexTickerRecorder<Ltc, Trc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ltc, Usd>>>().To<VircurexTickerRecorder<Ltc, Usd>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ltc, Yac>>>().To<VircurexTickerRecorder<Ltc, Yac>>().InSingletonScope();

			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Nmc, Btc>>>().To<VircurexTickerRecorder<Nmc, Btc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Nmc, Bqc>>>().To<VircurexTickerRecorder<Nmc, Bqc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Nmc, Cnc>>>().To<VircurexTickerRecorder<Nmc, Cnc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Nmc, Dvc>>>().To<VircurexTickerRecorder<Nmc, Dvc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Nmc, Eur>>>().To<VircurexTickerRecorder<Nmc, Eur>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Nmc, Frc>>>().To<VircurexTickerRecorder<Nmc, Frc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Nmc, Ftc>>>().To<VircurexTickerRecorder<Nmc, Ftc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Nmc, Ixc>>>().To<VircurexTickerRecorder<Nmc, Ixc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Nmc, Ltc>>>().To<VircurexTickerRecorder<Nmc, Ltc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Nmc, Nvc>>>().To<VircurexTickerRecorder<Nmc, Nvc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Nmc, Ppc>>>().To<VircurexTickerRecorder<Nmc, Ppc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Nmc, Trc>>>().To<VircurexTickerRecorder<Nmc, Trc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Nmc, Usd>>>().To<VircurexTickerRecorder<Nmc, Usd>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Nmc, Yac>>>().To<VircurexTickerRecorder<Nmc, Yac>>().InSingletonScope();

			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Nvc, Btc>>>().To<VircurexTickerRecorder<Nvc, Btc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Nvc, Bqc>>>().To<VircurexTickerRecorder<Nvc, Bqc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Nvc, Cnc>>>().To<VircurexTickerRecorder<Nvc, Cnc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Nvc, Dvc>>>().To<VircurexTickerRecorder<Nvc, Dvc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Nvc, Eur>>>().To<VircurexTickerRecorder<Nvc, Eur>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Nvc, Frc>>>().To<VircurexTickerRecorder<Nvc, Frc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Nvc, Ftc>>>().To<VircurexTickerRecorder<Nvc, Ftc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Nvc, Ixc>>>().To<VircurexTickerRecorder<Nvc, Ixc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Nvc, Ltc>>>().To<VircurexTickerRecorder<Nvc, Ltc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Nvc, Nmc>>>().To<VircurexTickerRecorder<Nvc, Nmc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Nvc, Ppc>>>().To<VircurexTickerRecorder<Nvc, Ppc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Nvc, Trc>>>().To<VircurexTickerRecorder<Nvc, Trc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Nvc, Usd>>>().To<VircurexTickerRecorder<Nvc, Usd>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Nvc, Yac>>>().To<VircurexTickerRecorder<Nvc, Yac>>().InSingletonScope();

			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ppc, Btc>>>().To<VircurexTickerRecorder<Ppc, Btc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ppc, Bqc>>>().To<VircurexTickerRecorder<Ppc, Bqc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ppc, Cnc>>>().To<VircurexTickerRecorder<Ppc, Cnc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ppc, Dvc>>>().To<VircurexTickerRecorder<Ppc, Dvc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ppc, Eur>>>().To<VircurexTickerRecorder<Ppc, Eur>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ppc, Frc>>>().To<VircurexTickerRecorder<Ppc, Frc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ppc, Ftc>>>().To<VircurexTickerRecorder<Ppc, Ftc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ppc, Ixc>>>().To<VircurexTickerRecorder<Ppc, Ixc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ppc, Ltc>>>().To<VircurexTickerRecorder<Ppc, Ltc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ppc, Nmc>>>().To<VircurexTickerRecorder<Ppc, Nmc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ppc, Nvc>>>().To<VircurexTickerRecorder<Ppc, Nvc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ppc, Trc>>>().To<VircurexTickerRecorder<Ppc, Trc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ppc, Usd>>>().To<VircurexTickerRecorder<Ppc, Usd>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Ppc, Yac>>>().To<VircurexTickerRecorder<Ppc, Yac>>().InSingletonScope();

			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Trc, Btc>>>().To<VircurexTickerRecorder<Trc, Btc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Trc, Bqc>>>().To<VircurexTickerRecorder<Trc, Bqc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Trc, Cnc>>>().To<VircurexTickerRecorder<Trc, Cnc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Trc, Dvc>>>().To<VircurexTickerRecorder<Trc, Dvc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Trc, Eur>>>().To<VircurexTickerRecorder<Trc, Eur>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Trc, Frc>>>().To<VircurexTickerRecorder<Trc, Frc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Trc, Ftc>>>().To<VircurexTickerRecorder<Trc, Ftc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Trc, Ixc>>>().To<VircurexTickerRecorder<Trc, Ixc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Trc, Ltc>>>().To<VircurexTickerRecorder<Trc, Ltc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Trc, Nmc>>>().To<VircurexTickerRecorder<Trc, Nmc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Trc, Nvc>>>().To<VircurexTickerRecorder<Trc, Nvc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Trc, Ppc>>>().To<VircurexTickerRecorder<Trc, Ppc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Trc, Usd>>>().To<VircurexTickerRecorder<Trc, Usd>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Trc, Yac>>>().To<VircurexTickerRecorder<Trc, Yac>>().InSingletonScope();

			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Usd, Btc>>>().To<VircurexTickerRecorder<Usd, Btc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Usd, Bqc>>>().To<VircurexTickerRecorder<Usd, Bqc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Usd, Cnc>>>().To<VircurexTickerRecorder<Usd, Cnc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Usd, Dvc>>>().To<VircurexTickerRecorder<Usd, Dvc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Usd, Eur>>>().To<VircurexTickerRecorder<Usd, Eur>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Usd, Frc>>>().To<VircurexTickerRecorder<Usd, Frc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Usd, Ftc>>>().To<VircurexTickerRecorder<Usd, Ftc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Usd, Ixc>>>().To<VircurexTickerRecorder<Usd, Ixc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Usd, Ltc>>>().To<VircurexTickerRecorder<Usd, Ltc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Usd, Nmc>>>().To<VircurexTickerRecorder<Usd, Nmc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Usd, Nvc>>>().To<VircurexTickerRecorder<Usd, Nvc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Usd, Ppc>>>().To<VircurexTickerRecorder<Usd, Ppc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Usd, Trc>>>().To<VircurexTickerRecorder<Usd, Trc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Usd, Yac>>>().To<VircurexTickerRecorder<Usd, Yac>>().InSingletonScope();

			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Yac, Btc>>>().To<VircurexTickerRecorder<Yac, Btc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Yac, Bqc>>>().To<VircurexTickerRecorder<Yac, Bqc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Yac, Cnc>>>().To<VircurexTickerRecorder<Yac, Cnc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Yac, Dvc>>>().To<VircurexTickerRecorder<Yac, Dvc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Yac, Eur>>>().To<VircurexTickerRecorder<Yac, Eur>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Yac, Frc>>>().To<VircurexTickerRecorder<Yac, Frc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Yac, Ftc>>>().To<VircurexTickerRecorder<Yac, Ftc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Yac, Ixc>>>().To<VircurexTickerRecorder<Yac, Ixc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Yac, Ltc>>>().To<VircurexTickerRecorder<Yac, Ltc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Yac, Nmc>>>().To<VircurexTickerRecorder<Yac, Nmc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Yac, Nvc>>>().To<VircurexTickerRecorder<Yac, Nvc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Yac, Ppc>>>().To<VircurexTickerRecorder<Yac, Ppc>>().InSingletonScope();
			Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Yac, Trc>>>().To<VircurexTickerRecorder<Yac, Trc>>().InSingletonScope();
            Bind<ITickerRecorder<Exchanges.Vircurex.Ticker<Yac, Usd>>>().To<VircurexTickerRecorder<Yac, Usd>>().InSingletonScope();
            #endregion

            #region Vircurex Depth Recorders
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Btc, Bqc>>>().To<VircurexDepthRecorder<Btc, Bqc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Btc, Cnc>>>().To<VircurexDepthRecorder<Btc, Cnc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Btc, Dvc>>>().To<VircurexDepthRecorder<Btc, Dvc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Btc, Eur>>>().To<VircurexDepthRecorder<Btc, Eur>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Btc, Frc>>>().To<VircurexDepthRecorder<Btc, Frc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Btc, Ftc>>>().To<VircurexDepthRecorder<Btc, Ftc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Btc, Ixc>>>().To<VircurexDepthRecorder<Btc, Ixc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Btc, Ltc>>>().To<VircurexDepthRecorder<Btc, Ltc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Btc, Nmc>>>().To<VircurexDepthRecorder<Btc, Nmc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Btc, Nvc>>>().To<VircurexDepthRecorder<Btc, Nvc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Btc, Ppc>>>().To<VircurexDepthRecorder<Btc, Ppc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Btc, Trc>>>().To<VircurexDepthRecorder<Btc, Trc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Btc, Usd>>>().To<VircurexDepthRecorder<Btc, Usd>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Btc, Yac>>>().To<VircurexDepthRecorder<Btc, Yac>>().InSingletonScope();

            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Bqc, Btc>>>().To<VircurexDepthRecorder<Bqc, Btc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Bqc, Cnc>>>().To<VircurexDepthRecorder<Bqc, Cnc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Bqc, Dvc>>>().To<VircurexDepthRecorder<Bqc, Dvc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Bqc, Eur>>>().To<VircurexDepthRecorder<Bqc, Eur>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Bqc, Frc>>>().To<VircurexDepthRecorder<Bqc, Frc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Bqc, Ftc>>>().To<VircurexDepthRecorder<Bqc, Ftc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Bqc, Ixc>>>().To<VircurexDepthRecorder<Bqc, Ixc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Bqc, Ltc>>>().To<VircurexDepthRecorder<Bqc, Ltc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Bqc, Nmc>>>().To<VircurexDepthRecorder<Bqc, Nmc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Bqc, Nvc>>>().To<VircurexDepthRecorder<Bqc, Nvc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Bqc, Ppc>>>().To<VircurexDepthRecorder<Bqc, Ppc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Bqc, Trc>>>().To<VircurexDepthRecorder<Bqc, Trc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Bqc, Usd>>>().To<VircurexDepthRecorder<Bqc, Usd>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Bqc, Yac>>>().To<VircurexDepthRecorder<Bqc, Yac>>().InSingletonScope();

            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Cnc, Btc>>>().To<VircurexDepthRecorder<Cnc, Btc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Cnc, Bqc>>>().To<VircurexDepthRecorder<Cnc, Bqc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Cnc, Dvc>>>().To<VircurexDepthRecorder<Cnc, Dvc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Cnc, Eur>>>().To<VircurexDepthRecorder<Cnc, Eur>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Cnc, Frc>>>().To<VircurexDepthRecorder<Cnc, Frc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Cnc, Ftc>>>().To<VircurexDepthRecorder<Cnc, Ftc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Cnc, Ixc>>>().To<VircurexDepthRecorder<Cnc, Ixc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Cnc, Ltc>>>().To<VircurexDepthRecorder<Cnc, Ltc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Cnc, Nmc>>>().To<VircurexDepthRecorder<Cnc, Nmc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Cnc, Nvc>>>().To<VircurexDepthRecorder<Cnc, Nvc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Cnc, Ppc>>>().To<VircurexDepthRecorder<Cnc, Ppc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Cnc, Trc>>>().To<VircurexDepthRecorder<Cnc, Trc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Cnc, Usd>>>().To<VircurexDepthRecorder<Cnc, Usd>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Cnc, Yac>>>().To<VircurexDepthRecorder<Cnc, Yac>>().InSingletonScope();

            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Dvc, Btc>>>().To<VircurexDepthRecorder<Dvc, Btc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Dvc, Bqc>>>().To<VircurexDepthRecorder<Dvc, Bqc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Dvc, Cnc>>>().To<VircurexDepthRecorder<Dvc, Cnc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Dvc, Eur>>>().To<VircurexDepthRecorder<Dvc, Eur>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Dvc, Frc>>>().To<VircurexDepthRecorder<Dvc, Frc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Dvc, Ftc>>>().To<VircurexDepthRecorder<Dvc, Ftc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Dvc, Ixc>>>().To<VircurexDepthRecorder<Dvc, Ixc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Dvc, Ltc>>>().To<VircurexDepthRecorder<Dvc, Ltc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Dvc, Nmc>>>().To<VircurexDepthRecorder<Dvc, Nmc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Dvc, Nvc>>>().To<VircurexDepthRecorder<Dvc, Nvc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Dvc, Ppc>>>().To<VircurexDepthRecorder<Dvc, Ppc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Dvc, Trc>>>().To<VircurexDepthRecorder<Dvc, Trc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Dvc, Usd>>>().To<VircurexDepthRecorder<Dvc, Usd>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Dvc, Yac>>>().To<VircurexDepthRecorder<Dvc, Yac>>().InSingletonScope();

            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Eur, Btc>>>().To<VircurexDepthRecorder<Eur, Btc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Eur, Bqc>>>().To<VircurexDepthRecorder<Eur, Bqc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Eur, Cnc>>>().To<VircurexDepthRecorder<Eur, Cnc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Eur, Dvc>>>().To<VircurexDepthRecorder<Eur, Dvc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Eur, Frc>>>().To<VircurexDepthRecorder<Eur, Frc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Eur, Ftc>>>().To<VircurexDepthRecorder<Eur, Ftc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Eur, Ixc>>>().To<VircurexDepthRecorder<Eur, Ixc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Eur, Ltc>>>().To<VircurexDepthRecorder<Eur, Ltc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Eur, Nmc>>>().To<VircurexDepthRecorder<Eur, Nmc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Eur, Nvc>>>().To<VircurexDepthRecorder<Eur, Nvc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Eur, Ppc>>>().To<VircurexDepthRecorder<Eur, Ppc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Eur, Trc>>>().To<VircurexDepthRecorder<Eur, Trc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Eur, Usd>>>().To<VircurexDepthRecorder<Eur, Usd>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Eur, Yac>>>().To<VircurexDepthRecorder<Eur, Yac>>().InSingletonScope();

            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Frc, Btc>>>().To<VircurexDepthRecorder<Frc, Btc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Frc, Bqc>>>().To<VircurexDepthRecorder<Frc, Bqc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Frc, Cnc>>>().To<VircurexDepthRecorder<Frc, Cnc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Frc, Dvc>>>().To<VircurexDepthRecorder<Frc, Dvc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Frc, Eur>>>().To<VircurexDepthRecorder<Frc, Eur>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Frc, Ftc>>>().To<VircurexDepthRecorder<Frc, Ftc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Frc, Ixc>>>().To<VircurexDepthRecorder<Frc, Ixc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Frc, Ltc>>>().To<VircurexDepthRecorder<Frc, Ltc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Frc, Nmc>>>().To<VircurexDepthRecorder<Frc, Nmc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Frc, Nvc>>>().To<VircurexDepthRecorder<Frc, Nvc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Frc, Ppc>>>().To<VircurexDepthRecorder<Frc, Ppc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Frc, Trc>>>().To<VircurexDepthRecorder<Frc, Trc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Frc, Usd>>>().To<VircurexDepthRecorder<Frc, Usd>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Frc, Yac>>>().To<VircurexDepthRecorder<Frc, Yac>>().InSingletonScope();

            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ftc, Btc>>>().To<VircurexDepthRecorder<Ftc, Btc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ftc, Bqc>>>().To<VircurexDepthRecorder<Ftc, Bqc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ftc, Cnc>>>().To<VircurexDepthRecorder<Ftc, Cnc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ftc, Dvc>>>().To<VircurexDepthRecorder<Ftc, Dvc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ftc, Eur>>>().To<VircurexDepthRecorder<Ftc, Eur>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ftc, Frc>>>().To<VircurexDepthRecorder<Ftc, Frc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ftc, Ixc>>>().To<VircurexDepthRecorder<Ftc, Ixc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ftc, Ltc>>>().To<VircurexDepthRecorder<Ftc, Ltc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ftc, Nmc>>>().To<VircurexDepthRecorder<Ftc, Nmc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ftc, Nvc>>>().To<VircurexDepthRecorder<Ftc, Nvc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ftc, Ppc>>>().To<VircurexDepthRecorder<Ftc, Ppc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ftc, Trc>>>().To<VircurexDepthRecorder<Ftc, Trc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ftc, Usd>>>().To<VircurexDepthRecorder<Ftc, Usd>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ftc, Yac>>>().To<VircurexDepthRecorder<Ftc, Yac>>().InSingletonScope();

            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ixc, Btc>>>().To<VircurexDepthRecorder<Ixc, Btc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ixc, Bqc>>>().To<VircurexDepthRecorder<Ixc, Bqc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ixc, Cnc>>>().To<VircurexDepthRecorder<Ixc, Cnc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ixc, Dvc>>>().To<VircurexDepthRecorder<Ixc, Dvc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ixc, Eur>>>().To<VircurexDepthRecorder<Ixc, Eur>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ixc, Frc>>>().To<VircurexDepthRecorder<Ixc, Frc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ixc, Ftc>>>().To<VircurexDepthRecorder<Ixc, Ftc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ixc, Ltc>>>().To<VircurexDepthRecorder<Ixc, Ltc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ixc, Nmc>>>().To<VircurexDepthRecorder<Ixc, Nmc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ixc, Nvc>>>().To<VircurexDepthRecorder<Ixc, Nvc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ixc, Ppc>>>().To<VircurexDepthRecorder<Ixc, Ppc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ixc, Trc>>>().To<VircurexDepthRecorder<Ixc, Trc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ixc, Usd>>>().To<VircurexDepthRecorder<Ixc, Usd>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ixc, Yac>>>().To<VircurexDepthRecorder<Ixc, Yac>>().InSingletonScope();

            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ltc, Btc>>>().To<VircurexDepthRecorder<Ltc, Btc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ltc, Bqc>>>().To<VircurexDepthRecorder<Ltc, Bqc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ltc, Cnc>>>().To<VircurexDepthRecorder<Ltc, Cnc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ltc, Dvc>>>().To<VircurexDepthRecorder<Ltc, Dvc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ltc, Eur>>>().To<VircurexDepthRecorder<Ltc, Eur>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ltc, Frc>>>().To<VircurexDepthRecorder<Ltc, Frc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ltc, Ftc>>>().To<VircurexDepthRecorder<Ltc, Ftc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ltc, Ixc>>>().To<VircurexDepthRecorder<Ltc, Ixc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ltc, Nmc>>>().To<VircurexDepthRecorder<Ltc, Nmc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ltc, Nvc>>>().To<VircurexDepthRecorder<Ltc, Nvc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ltc, Ppc>>>().To<VircurexDepthRecorder<Ltc, Ppc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ltc, Trc>>>().To<VircurexDepthRecorder<Ltc, Trc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ltc, Usd>>>().To<VircurexDepthRecorder<Ltc, Usd>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ltc, Yac>>>().To<VircurexDepthRecorder<Ltc, Yac>>().InSingletonScope();

            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Nmc, Btc>>>().To<VircurexDepthRecorder<Nmc, Btc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Nmc, Bqc>>>().To<VircurexDepthRecorder<Nmc, Bqc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Nmc, Cnc>>>().To<VircurexDepthRecorder<Nmc, Cnc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Nmc, Dvc>>>().To<VircurexDepthRecorder<Nmc, Dvc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Nmc, Eur>>>().To<VircurexDepthRecorder<Nmc, Eur>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Nmc, Frc>>>().To<VircurexDepthRecorder<Nmc, Frc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Nmc, Ftc>>>().To<VircurexDepthRecorder<Nmc, Ftc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Nmc, Ixc>>>().To<VircurexDepthRecorder<Nmc, Ixc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Nmc, Ltc>>>().To<VircurexDepthRecorder<Nmc, Ltc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Nmc, Nvc>>>().To<VircurexDepthRecorder<Nmc, Nvc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Nmc, Ppc>>>().To<VircurexDepthRecorder<Nmc, Ppc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Nmc, Trc>>>().To<VircurexDepthRecorder<Nmc, Trc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Nmc, Usd>>>().To<VircurexDepthRecorder<Nmc, Usd>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Nmc, Yac>>>().To<VircurexDepthRecorder<Nmc, Yac>>().InSingletonScope();

            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Nvc, Btc>>>().To<VircurexDepthRecorder<Nvc, Btc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Nvc, Bqc>>>().To<VircurexDepthRecorder<Nvc, Bqc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Nvc, Cnc>>>().To<VircurexDepthRecorder<Nvc, Cnc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Nvc, Dvc>>>().To<VircurexDepthRecorder<Nvc, Dvc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Nvc, Eur>>>().To<VircurexDepthRecorder<Nvc, Eur>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Nvc, Frc>>>().To<VircurexDepthRecorder<Nvc, Frc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Nvc, Ftc>>>().To<VircurexDepthRecorder<Nvc, Ftc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Nvc, Ixc>>>().To<VircurexDepthRecorder<Nvc, Ixc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Nvc, Ltc>>>().To<VircurexDepthRecorder<Nvc, Ltc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Nvc, Nmc>>>().To<VircurexDepthRecorder<Nvc, Nmc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Nvc, Ppc>>>().To<VircurexDepthRecorder<Nvc, Ppc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Nvc, Trc>>>().To<VircurexDepthRecorder<Nvc, Trc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Nvc, Usd>>>().To<VircurexDepthRecorder<Nvc, Usd>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Nvc, Yac>>>().To<VircurexDepthRecorder<Nvc, Yac>>().InSingletonScope();

            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ppc, Btc>>>().To<VircurexDepthRecorder<Ppc, Btc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ppc, Bqc>>>().To<VircurexDepthRecorder<Ppc, Bqc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ppc, Cnc>>>().To<VircurexDepthRecorder<Ppc, Cnc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ppc, Dvc>>>().To<VircurexDepthRecorder<Ppc, Dvc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ppc, Eur>>>().To<VircurexDepthRecorder<Ppc, Eur>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ppc, Frc>>>().To<VircurexDepthRecorder<Ppc, Frc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ppc, Ftc>>>().To<VircurexDepthRecorder<Ppc, Ftc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ppc, Ixc>>>().To<VircurexDepthRecorder<Ppc, Ixc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ppc, Ltc>>>().To<VircurexDepthRecorder<Ppc, Ltc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ppc, Nmc>>>().To<VircurexDepthRecorder<Ppc, Nmc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ppc, Nvc>>>().To<VircurexDepthRecorder<Ppc, Nvc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ppc, Trc>>>().To<VircurexDepthRecorder<Ppc, Trc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ppc, Usd>>>().To<VircurexDepthRecorder<Ppc, Usd>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Ppc, Yac>>>().To<VircurexDepthRecorder<Ppc, Yac>>().InSingletonScope();

            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Trc, Btc>>>().To<VircurexDepthRecorder<Trc, Btc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Trc, Bqc>>>().To<VircurexDepthRecorder<Trc, Bqc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Trc, Cnc>>>().To<VircurexDepthRecorder<Trc, Cnc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Trc, Dvc>>>().To<VircurexDepthRecorder<Trc, Dvc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Trc, Eur>>>().To<VircurexDepthRecorder<Trc, Eur>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Trc, Frc>>>().To<VircurexDepthRecorder<Trc, Frc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Trc, Ftc>>>().To<VircurexDepthRecorder<Trc, Ftc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Trc, Ixc>>>().To<VircurexDepthRecorder<Trc, Ixc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Trc, Ltc>>>().To<VircurexDepthRecorder<Trc, Ltc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Trc, Nmc>>>().To<VircurexDepthRecorder<Trc, Nmc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Trc, Nvc>>>().To<VircurexDepthRecorder<Trc, Nvc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Trc, Ppc>>>().To<VircurexDepthRecorder<Trc, Ppc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Trc, Usd>>>().To<VircurexDepthRecorder<Trc, Usd>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Trc, Yac>>>().To<VircurexDepthRecorder<Trc, Yac>>().InSingletonScope();

            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Usd, Btc>>>().To<VircurexDepthRecorder<Usd, Btc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Usd, Bqc>>>().To<VircurexDepthRecorder<Usd, Bqc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Usd, Cnc>>>().To<VircurexDepthRecorder<Usd, Cnc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Usd, Dvc>>>().To<VircurexDepthRecorder<Usd, Dvc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Usd, Eur>>>().To<VircurexDepthRecorder<Usd, Eur>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Usd, Frc>>>().To<VircurexDepthRecorder<Usd, Frc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Usd, Ftc>>>().To<VircurexDepthRecorder<Usd, Ftc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Usd, Ixc>>>().To<VircurexDepthRecorder<Usd, Ixc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Usd, Ltc>>>().To<VircurexDepthRecorder<Usd, Ltc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Usd, Nmc>>>().To<VircurexDepthRecorder<Usd, Nmc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Usd, Nvc>>>().To<VircurexDepthRecorder<Usd, Nvc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Usd, Ppc>>>().To<VircurexDepthRecorder<Usd, Ppc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Usd, Trc>>>().To<VircurexDepthRecorder<Usd, Trc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Usd, Yac>>>().To<VircurexDepthRecorder<Usd, Yac>>().InSingletonScope();

            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Yac, Btc>>>().To<VircurexDepthRecorder<Yac, Btc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Yac, Bqc>>>().To<VircurexDepthRecorder<Yac, Bqc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Yac, Cnc>>>().To<VircurexDepthRecorder<Yac, Cnc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Yac, Dvc>>>().To<VircurexDepthRecorder<Yac, Dvc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Yac, Eur>>>().To<VircurexDepthRecorder<Yac, Eur>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Yac, Frc>>>().To<VircurexDepthRecorder<Yac, Frc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Yac, Ftc>>>().To<VircurexDepthRecorder<Yac, Ftc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Yac, Ixc>>>().To<VircurexDepthRecorder<Yac, Ixc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Yac, Ltc>>>().To<VircurexDepthRecorder<Yac, Ltc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Yac, Nmc>>>().To<VircurexDepthRecorder<Yac, Nmc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Yac, Nvc>>>().To<VircurexDepthRecorder<Yac, Nvc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Yac, Ppc>>>().To<VircurexDepthRecorder<Yac, Ppc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Yac, Trc>>>().To<VircurexDepthRecorder<Yac, Trc>>().InSingletonScope();
            Bind<IDepthRecorder<Exchanges.Vircurex.Depth<Yac, Usd>>>().To<VircurexDepthRecorder<Yac, Usd>>().InSingletonScope();
            #endregion
		}

        private void BindVircurexDepthConversionUpdaters()
        {
            #region Vircurex Depth Conversion Updaters
            Bind<VircurexDepthAskConversionUpdater<Btc, Bqc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Btc, Cnc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Btc, Dvc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Btc, Eur>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Btc, Frc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Btc, Ftc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Btc, Ixc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Btc, Ltc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Btc, Nmc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Btc, Nvc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Btc, Ppc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Btc, Trc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Btc, Usd>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Btc, Yac>>().ToSelf().InSingletonScope();

            Bind<VircurexDepthAskConversionUpdater<Bqc, Btc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Bqc, Cnc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Bqc, Dvc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Bqc, Eur>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Bqc, Frc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Bqc, Ftc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Bqc, Ixc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Bqc, Ltc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Bqc, Nmc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Bqc, Nvc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Bqc, Ppc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Bqc, Trc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Bqc, Usd>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Bqc, Yac>>().ToSelf().InSingletonScope();

            Bind<VircurexDepthAskConversionUpdater<Cnc, Btc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Cnc, Bqc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Cnc, Dvc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Cnc, Eur>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Cnc, Frc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Cnc, Ftc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Cnc, Ixc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Cnc, Ltc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Cnc, Nmc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Cnc, Nvc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Cnc, Ppc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Cnc, Trc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Cnc, Usd>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Cnc, Yac>>().ToSelf().InSingletonScope();

            Bind<VircurexDepthAskConversionUpdater<Dvc, Btc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Dvc, Bqc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Dvc, Cnc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Dvc, Eur>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Dvc, Frc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Dvc, Ftc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Dvc, Ixc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Dvc, Ltc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Dvc, Nmc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Dvc, Nvc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Dvc, Ppc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Dvc, Trc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Dvc, Usd>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Dvc, Yac>>().ToSelf().InSingletonScope();

            Bind<VircurexDepthAskConversionUpdater<Eur, Btc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Eur, Bqc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Eur, Cnc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Eur, Dvc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Eur, Frc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Eur, Ftc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Eur, Ixc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Eur, Ltc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Eur, Nmc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Eur, Nvc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Eur, Ppc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Eur, Trc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Eur, Usd>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Eur, Yac>>().ToSelf().InSingletonScope();

            Bind<VircurexDepthAskConversionUpdater<Frc, Btc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Frc, Bqc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Frc, Cnc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Frc, Dvc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Frc, Eur>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Frc, Ftc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Frc, Ixc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Frc, Ltc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Frc, Nmc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Frc, Nvc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Frc, Ppc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Frc, Trc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Frc, Usd>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Frc, Yac>>().ToSelf().InSingletonScope();

            Bind<VircurexDepthAskConversionUpdater<Ftc, Btc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ftc, Bqc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ftc, Cnc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ftc, Dvc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ftc, Eur>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ftc, Frc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ftc, Ixc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ftc, Ltc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ftc, Nmc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ftc, Nvc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ftc, Ppc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ftc, Trc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ftc, Usd>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ftc, Yac>>().ToSelf().InSingletonScope();

            Bind<VircurexDepthAskConversionUpdater<Ixc, Btc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ixc, Bqc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ixc, Cnc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ixc, Dvc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ixc, Eur>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ixc, Frc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ixc, Ftc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ixc, Ltc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ixc, Nmc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ixc, Nvc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ixc, Ppc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ixc, Trc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ixc, Usd>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ixc, Yac>>().ToSelf().InSingletonScope();

            Bind<VircurexDepthAskConversionUpdater<Ltc, Btc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ltc, Bqc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ltc, Cnc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ltc, Dvc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ltc, Eur>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ltc, Frc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ltc, Ftc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ltc, Ixc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ltc, Nmc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ltc, Nvc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ltc, Ppc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ltc, Trc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ltc, Usd>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ltc, Yac>>().ToSelf().InSingletonScope();

            Bind<VircurexDepthAskConversionUpdater<Nmc, Btc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Nmc, Bqc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Nmc, Cnc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Nmc, Dvc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Nmc, Eur>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Nmc, Frc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Nmc, Ftc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Nmc, Ixc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Nmc, Ltc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Nmc, Nvc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Nmc, Ppc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Nmc, Trc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Nmc, Usd>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Nmc, Yac>>().ToSelf().InSingletonScope();

            Bind<VircurexDepthAskConversionUpdater<Nvc, Btc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Nvc, Bqc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Nvc, Cnc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Nvc, Dvc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Nvc, Eur>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Nvc, Frc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Nvc, Ftc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Nvc, Ixc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Nvc, Ltc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Nvc, Nmc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Nvc, Ppc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Nvc, Trc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Nvc, Usd>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Nvc, Yac>>().ToSelf().InSingletonScope();

            Bind<VircurexDepthAskConversionUpdater<Ppc, Btc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ppc, Bqc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ppc, Cnc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ppc, Dvc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ppc, Eur>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ppc, Frc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ppc, Ftc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ppc, Ixc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ppc, Ltc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ppc, Nmc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ppc, Nvc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ppc, Trc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ppc, Usd>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Ppc, Yac>>().ToSelf().InSingletonScope();

            Bind<VircurexDepthAskConversionUpdater<Trc, Btc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Trc, Bqc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Trc, Cnc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Trc, Dvc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Trc, Eur>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Trc, Frc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Trc, Ftc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Trc, Ixc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Trc, Ltc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Trc, Nmc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Trc, Nvc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Trc, Ppc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Trc, Usd>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Trc, Yac>>().ToSelf().InSingletonScope();

            Bind<VircurexDepthAskConversionUpdater<Usd, Btc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Usd, Bqc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Usd, Cnc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Usd, Dvc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Usd, Eur>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Usd, Frc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Usd, Ftc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Usd, Ixc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Usd, Ltc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Usd, Nmc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Usd, Nvc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Usd, Ppc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Usd, Trc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Usd, Yac>>().ToSelf().InSingletonScope();

            Bind<VircurexDepthAskConversionUpdater<Yac, Btc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Yac, Bqc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Yac, Cnc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Yac, Dvc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Yac, Eur>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Yac, Frc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Yac, Ftc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Yac, Ixc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Yac, Ltc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Yac, Nmc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Yac, Nvc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Yac, Ppc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Yac, Trc>>().ToSelf().InSingletonScope();
            Bind<VircurexDepthAskConversionUpdater<Yac, Usd>>().ToSelf().InSingletonScope();
            #endregion
        }
	}
}
